/* 838. 推多米诺 */
/**
 * @param {string} dominoes
 * @return {string}
 */
/* 
    模拟:双指针
    如果两边的牌同向，那么这段连续的骨牌会到向同一方向
    如果两边的骨牌相对,那么这段骨牌会向中间倒
    如果两边的骨牌相反,那么骨牌会保持竖立
*/
var pushDominoes = function (dominoes) {
    const s = [...dominoes]
    let n = s.length, i = 0
    let left = "L"
    debugger
    while (i < n) {
        let j = i
        while (j < n && s[j] === ".") {
            // 找到一段连续的没有被推动的骨牌
            j++
        }

        const right = j < n ? s[j] : 'R'
        if (left === right) {
            // 方向相同,那么这些竖立骨牌也会倒向同一方向
            while (i < j) {
                s[i++] = right
            }
        } else if (left === "R" && right === "L") { //方向相对,那么重两侧中间到
            let k = j - 1
            while (i < k) {
                s[i++] = 'R'
                s[k--] = 'L'
            }

        }

        left = right
        i = j + 1
    }

    return s.join("")
};
const result = pushDominoes('.L.R...LR..L..')
console.log("result :>>", result);